
Public Interface ICombatEngine
    ' this is the base framework for combat engines. 

    ReadOnly Property CombatEngineID() As CombatEngineIdentifier

    ReadOnly Property Author() As String

    ReadOnly Property Notes() As String

    Sub OpenCombatEngine(ByVal filePath As String)

    Sub SaveCombatEngine(ByVal filePath As String)

    Sub ShowPreCombatWindow()

    Sub ShowPostCombatWindow()

    Sub GenerateCombatTurn(ByRef gameData As cmplib01.CampaignerGameData)


    Function CombatReportXML() As Xml.XmlDataDocument

    Function CombatReportString() As String

    Function Combats() As cmplib01.Battles

    Property FlexMap() As FMPLib01.FlexMapData

    Property UsesPrecombatWindow() As Boolean

    Property UsesPostCombatWindow() As Boolean


    Property UsesContactCombat() As Boolean

    Property UsesRangedCombat() As Boolean


    ReadOnly Property PreCombatWindow() As System.Windows.Forms.UserControl

    ReadOnly Property PostCombatWindow() As System.Windows.Forms.UserControl


    Sub PrepareCampaign(ByRef gamedata As Object)


    '// we need the replay events
    ReadOnly Property ReplayEvents() As Collection


    '// and replay event source items (images)



End Interface


Public Enum CombatEngineIdentifier
    Campaigner = 0
    Conquest = 1

    TestCombatEngine = 200
End Enum


<Serializable()> Public Enum ReplayEventType
    image = 0
    sound = 1
    text = 2
End Enum

<Serializable()> Public Class ReplayEvent

    Private m_ET As ReplayEventType
    Private m_startTime As TimeSpan
    Private m_endTime As TimeSpan
    Private m_location As Drawing.PointF

    Public Property location() As Drawing.PointF
        Get
            Return m_location
        End Get
        Set(ByVal value As Drawing.PointF)
            m_location = value
        End Set
    End Property

    Public Property ET() As ReplayEventType
        Get
            Return m_ET
        End Get
        Set(ByVal value As ReplayEventType)
            m_ET = value
        End Set
    End Property

    Public Property StartTime() As TimeSpan
        Get
            Return m_startTime
        End Get
        Set(ByVal value As TimeSpan)
            m_startTime = value
        End Set
    End Property

    Public Property EndTime() As TimeSpan
        Get
            Return m_endTime
        End Get
        Set(ByVal value As TimeSpan)
            m_endTime = value
        End Set
    End Property

End Class


<Serializable()> Public Class BasicExplosionEvent
    Inherits ReplayEvent

    '// this is a conquest engine image. Makes a little 'splosion


End Class